<?php
namespace app\passenger\controller;
use app\AdminRest;
use app\card\model\DefaultSetting;
use think\App;
use app\passenger\model\AdminActive as Model;
use app\passenger\model\AdminCompany;
use app\passenger\model\Coupon;
use think\facade\Cache;
use think\facade\Db;

class AdminActive extends AdminRest
{

    protected $model;

    protected $company_model;

    protected $coupon_model;


    public function __construct(App $app) {
        parent::__construct($app);
        $this->model         = new Model();

        $this->company_model = new AdminCompany();

        $this->coupon_model  = new Coupon();
    }

    /**
     * User: chenniang
     * Date: 2019-12-18 14:30
     * @return void
     * descrption:列表
     */
    public function activeList(){
       $input = $this->_input;
        //uniacid
       $dis[] = ['uniacid','=',$this->_uniacid];
        //查询没有被删除对
       $dis[] = ['status','>',-1];
       //查询
       if(!empty($input['title'])){
           $dis[] = ['title','like',"%".$input['title']."%"];
       }
        //查询
       $data  = $this->model->activeList($dis,$input['limit']);

        return $this->success($data);
    }


    /**
     * @author chenniang
     * @DataTime: 2020-03-09 18:48
     * @功能说明:添加活动
     */
    public function activeAdd(){

        $input = $this->_input;
        //转换格式
        $input = $this->changeData($input);
        //添加
        $res   = $this->model->activeAdd($input);

        return $this->success($res);
    }


    /**
     * @author chenniang
     * @DataTime: 2020-03-09 18:49
     * @功能说明:转换数据
     */
    public function changeData($input){
        //uniacid
        $input['uniacid'] = $this->_uniacid;

        //转换图片
        if(!empty($input['imgs'])){

            $input['imgs'] = implode(',',$input['imgs']);
        }
        //公司
        if(!empty($input['company'])){

            $input['company'] =  $this->company_model->changeData($input['company']);
        }
        $id = !empty($input['id'])?$input['id']:'';
        //查看是否有进行中的活动
        $active = $this->model->activeIng($this->_uniacid,$id);
        //只能添加一个进行中的活动
        if(!empty($active)&&$input['start_time']<time()&&$input['end_time']>time()){

            $this->errorMsg('已经有在进行中的活动');
        }
        //删除状态 没用
        if(!empty($input['status_text'])){

            unset($input['status_text']);
        }
        //可推荐人数不能大于福利券总数
        if($input['user_coupon_num']<$input['coupon_num']){

            $this->errorMsg('可推荐人数不能大于福利券总数');
        }
        //活动开始时间不能大于等于活动结束时间
        if($input['start_time']>=$input['end_time']){
            $this->errorMsg('活动开始时间不能大于等于活动结束时间');

        }
        //不能早于活动时间
        if($input['user_out_type']==1&&$input['user_coupon_start']<$input['start_time']){

            $this->errorMsg('新人福利券开始时间不能小于活动开始时间');

        }
        //新人福利券开始时间不能小于等于结束时间
        if($input['user_out_type']==1&&$input['user_coupon_start']>=$input['user_coupon_end']){

            $this->errorMsg('新人福利券开始时间不能小于等于结束时间');

        }
        //不能早于活动时间
        if($input['out_type']==1&&$input['coupon_start']<=$input['start_time']){

            $this->errorMsg('推荐福利券开始时间不能小于等于活动开始时间');

        }
        //新人福利券开始时间不能小于等于结束时间
        if($input['user_out_type']==1&&$input['user_coupon_start']>=$input['user_coupon_end']){

            $this->errorMsg('新人福利券开始时间不能小于等于结束时间');

        }
        //如果是编辑
        if(!empty($input['id'])){
            //查看已经领取的数量
            $count = $this->coupon_model->where(['active_id'=>$input['id'],'type'=>1])->count();
            //如果已经领取
            if($count>$input['user_coupon_num']){

                $this->errorMsg('新人券数量不得小于已经领取数量,已经领取'.$count);

            }

            //活动详情
            $active_info = $this->model->activeInfo(['id'=>$input['id']]);
            //如果已经领取不能修改活动开始时间
            if($count>0&&$active_info['start_time']!=$input['start_time']){

                $this->errorMsg('活动优惠券已被领取后，不能修改活动开始时间');

            }
            //判断推荐人数
            $count = $this->coupon_model->getShareNum($input['id']);
            //推荐人券数不得小于已经领取的人数
            if($input['coupon_num']<$count){

                $this->errorMsg('推荐人券数不得小于已经领取的人数,已经领取'.$count);

            }
        }
        return $input;
    }


    /**
     * @author chenniang
     * @DataTime: 2020-03-06 18:18
     * @功能说明:编辑
     */
    public function activeUpdate(){

        $input = $this->_input;

        //编辑啊
        if(count($input)>2){
            //转换格式
            $input = $this->changeData($input);
            //编辑
            $data  = $this->model->activeUpdate(['id'=>$input['id']],$input);

        }else{
            //回显
            $data = $this->model->activeInfo(['id'=>$input['id']]);

            $dis = [
                //uniacid
                'a.uniacid' => $this->_uniacid,
                //活动id
                'a.active_id'=> $input['id']
            ];
            //公司
            $data['company'] = $this->company_model->getId($dis);
        }
        return $this->success($data);
    }


    /**
     * @author chenniang
     * @DataTime: 2020-03-20 20:59
     * @功能说明:删除活动
     */
    public function activeDel(){

        $input = $this->_input;

        $data  = $this->model->activeUpdate(['id'=>$input['id']],['status'=>-1]);

        return $this->success($data);
    }


    /**
     * @author chenniang
     * @DataTime: 2020-03-20 21:00
     * @功能说明:结束活动
     */
    public function overTime(){

        $input = $this->_input;

        $data  = $this->model->activeUpdate(['id'=>$input['id']],['end_time'=>time()]);

        return $this->success($data);
    }



    /**
     * @author chenniang
     * @DataTime: 2020-03-18 12:26
     * @功能说明:默认配置
     */
    public function defaultSetting(){

        $input   = $this->_input;

        $default = new DefaultSetting();

        if(count($input)>1){

            $input['passenger_hx_user'] = !empty($input['passenger_hx_user'])?json_encode($input['passenger_hx_user']):0;
            //新的配置
            $data = $default->settingUpdate(['uniacid' => $this->_uniacid],$input);

        }else{
            //新的配置
            $data = $default->settingInfo(['uniacid' => $this->_uniacid]);

            if(empty($data['passenger_cover'])){

                $data['passenger_cover'] = 'http://lbqny.migugu.com/longbing_card/passenger/click_get_coupon.gif';

            }
            $default->settingUpdate(['id' => $data['id']],$data);

            if(!empty($data['passenger_hx_user'])){

                $data['passenger_hx_user'] = json_decode($data['passenger_hx_user'],true);

            }else{
                $data['passenger_hx_user'] = [];
            }
        }

        longbingGetAppConfig($this->_uniacid ,true);

        return $this->success($data);
    }







}
